package br.ucb.rest.persistencia.vo;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the rst_cardapio database table.
 * 
 */
@Entity
@Table(name="rst_cardapio")
@SequenceGenerator(name="RST_CARDAPIO_NUCARDAPIO_GENERATOR", sequenceName="RESTAURANTE.RST_CARDAPIO_NU_CARDAPIO_SEQ")
@NamedQueries({
	@NamedQuery(name="CardapioVO.recuperarPorCategoria", 
		query="SELECT a FROM CardapioVO a WHERE a.categoriaVO.nuCategoria = :nuCategoria "),
	
	@NamedQuery(name="CardapioVO.recuperarFoto", 
		query="SELECT a.imFoto FROM CardapioVO a WHERE a.nuCardapio = :nuCardapio"),
		
	@NamedQuery(name="CardapioVO.contarPorCategoria", 
		query="SELECT count(a) FROM CardapioVO a WHERE a.categoriaVO.nuCategoria = :nuCategoria ")
})
public class CardapioVO implements Serializable {
	private static final long serialVersionUID = 9153485830598200612L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO, generator="RST_CARDAPIO_NUCARDAPIO_GENERATOR")
	@Column(name="nu_cardapio", unique=true, nullable=false)
	private Integer nuCardapio;

	@Column(name="im_foto", nullable=false)
	@Basic(fetch=FetchType.LAZY)
	private byte[] imFoto;

	@Column(name="url_video")
	@Basic(fetch=FetchType.LAZY)
	private String urlVideo;

	@Column(name="in_situacao", nullable=false)
	private Boolean inSituacao;

	@Column(name="no_prato", nullable=false, length=200)
	private String noPrato;

	@Column(name="nu_preco", nullable=false)
	private float nuPreco;

	@Column(name="qt_tempo_preparo", nullable=false)
	private Integer qtTempoPreparo;
	
	@Column(name="tx_descricacao")
	private String txDescricacao;

	//bi-directional many-to-one association to CardapioVO
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="nu_sugestao")
	private CardapioVO sugestaoAcompanhamento;

	//bi-directional many-to-one association to CategoriaVO
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="nu_categoria", nullable=false)
	private CategoriaVO categoriaVO;

	//bi-directional many-to-one association to CardapioIngredienteVO
	@OneToMany(mappedBy="cardapioVO", fetch=FetchType.EAGER)
	private List<CardapioIngredienteVO> colCardapioIngredienteVO;

	//bi-directional many-to-one association to PedidoVO
	@OneToMany(mappedBy="cardapioVO", fetch=FetchType.LAZY)
	private List<PedidoVO> colPedidoVO;

	public Integer getNuCardapio() {
		return nuCardapio;
	}

	public void setNuCardapio(Integer nuCardapio) {
		this.nuCardapio = nuCardapio;
	}

	public byte[] getImFoto() {
		return imFoto;
	}

	public void setImFoto(byte[] imFoto) {
		this.imFoto = imFoto;
	}

	public Boolean getInSituacao() {
		return inSituacao;
	}

	public void setInSituacao(Boolean inSituacao) {
		this.inSituacao = inSituacao;
	}

	public String getNoPrato() {
		return noPrato;
	}

	public void setNoPrato(String noPrato) {
		this.noPrato = noPrato;
	}

	public float getNuPreco() {
		return nuPreco;
	}

	public void setNuPreco(float nuPreco) {
		this.nuPreco = nuPreco;
	}

	public Integer getQtTempoPreparo() {
		return qtTempoPreparo;
	}

	public void setQtTempoPreparo(Integer qtTempoPreparo) {
		this.qtTempoPreparo = qtTempoPreparo;
	}

	public CardapioVO getSugestaoAcompanhamento() {
		return sugestaoAcompanhamento;
	}

	public void setSugestaoAcompanhamento(CardapioVO sugestaoAcompanhamento) {
		this.sugestaoAcompanhamento = sugestaoAcompanhamento;
	}

	public CategoriaVO getCategoriaVO() {
		return categoriaVO;
	}

	public void setCategoriaVO(CategoriaVO categoriaVO) {
		this.categoriaVO = categoriaVO;
	}

	public List<CardapioIngredienteVO> getColCardapioIngredienteVO() {
		return colCardapioIngredienteVO;
	}

	public void setColCardapioIngredienteVO(
			List<CardapioIngredienteVO> colCardapioIngredienteVO) {
		this.colCardapioIngredienteVO = colCardapioIngredienteVO;
	}

	public List<PedidoVO> getColPedidoVO() {
		return colPedidoVO;
	}

	public void setColPedidoVO(List<PedidoVO> colPedidoVO) {
		this.colPedidoVO = colPedidoVO;
	}

	public String getTxDescricacao() {
		return txDescricacao;
	}

	public void setTxDescricacao(String txDescricacao) {
		this.txDescricacao = txDescricacao;
	}

	public String getUrlVideo() {
		return urlVideo;
	}

	public void setUrlVideo(String urlVideo) {
		this.urlVideo = urlVideo;
	}
}